package com.pengheng.common;

import cn.hutool.core.util.HexUtil;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;

import java.util.List;

public class MyDecoder extends ByteToMessageDecoder {
    @Override
    protected void decode(ChannelHandlerContext channelHandlerContext, ByteBuf in, List<Object> list) throws Exception {

        if (in.readableBytes() < 9) {
            return;
        }
        in.markReaderIndex();
        System.out.println(getByteArray(in, 2));
        System.out.println(getByteArray(in, 2));
        System.out.println(getByteArray(in, 2));
        System.out.println(getByteArray(in, 1));
        System.out.println(getByteArray(in, 1));

        list.add(12312);
    }

    String getByteArray(ByteBuf in, int size) {
        byte[] dataLengthArray = new byte[size];
        for (int i = 0; i < size; i++) {
            dataLengthArray[i] = in.readByte();
        }
        String header = HexUtil.decodeHexStr(HexUtil.encodeHexStr(dataLengthArray));
        return header;
    }

    public static void main(String[] args) {


        int i = -0B100; // 十进制为-4

        // 二进制结果：1111 1111 1111 1111 1111 1111 1111 1110（>>的结果）
        // 二进制结果：1111111111111111111111111111110（>>>的结果）
        // 十进制结果：2147483646
        System.out.println("二进制结果：" + Integer.toBinaryString(i >>> 1));
        System.out.println("十进制结果：" + (i >>> 1));

    }
}
